home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre4.z / postgre4 / src / access / nobtree / nobtstrat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  3.1 KB  |  137 lines

  1. /*
  2.  *  btstrat.c -- Srategy map entries for the btree indexed access method
  3.  */
  4.  
  5. #include "tmp/c.h"
  6.  
  7. #ifdef NOBTREE
  8. #include "tmp/postgres.h"
  9.  
  10. #include "storage/page.h"
  11. #include "storage/bufpage.h"
  12.  
  13. #include "utils/log.h"
  14. #include "utils/rel.h"
  15. #include "utils/excid.h"
  16.  
  17. #include "access/genam.h"
  18. #include "access/isop.h"
  19. #include "access/nobtree.h"
  20.  
  21. RcsId("$Header: /private/postgres/src/access/nobtree/RCS/nobtstrat.c,v 1.6 1991/06/26 19:12:14 mao Exp $");
  22.  
  23. /*
  24.  * Note:
  25.  *    StrategyNegate, StrategyCommute, and StrategyNegateCommute
  26.  *    assume <, <=, ==, >=, > ordering.
  27.  */
  28. static StrategyNumber    BTNegate[5] = {
  29.     NOBTGreaterEqualStrategyNumber,
  30.     NOBTGreaterStrategyNumber,
  31.     InvalidStrategy,
  32.     NOBTLessStrategyNumber,
  33.     NOBTLessEqualStrategyNumber
  34. };
  35.  
  36. static StrategyNumber    BTCommute[5] = {
  37.     NOBTGreaterStrategyNumber,
  38.     NOBTGreaterEqualStrategyNumber,
  39.     InvalidStrategy,
  40.     NOBTLessEqualStrategyNumber,
  41.     NOBTLessStrategyNumber
  42. };
  43.  
  44. static StrategyNumber    BTNegateCommute[5] = {
  45.     NOBTLessEqualStrategyNumber,
  46.     NOBTLessStrategyNumber,
  47.     InvalidStrategy,
  48.     NOBTGreaterStrategyNumber,
  49.     NOBTGreaterEqualStrategyNumber
  50. };
  51.  
  52. static uint16    BTLessTermData[] = {        /* XXX type clash */
  53.     2,
  54.     NOBTLessStrategyNumber,
  55.     NegateResult,
  56.     NOBTLessStrategyNumber,
  57.     NegateResult | CommuteArguments
  58. };
  59.  
  60. static uint16    BTLessEqualTermData[] = {    /* XXX type clash */
  61.     2,
  62.     NOBTLessEqualStrategyNumber,
  63.     0x0,
  64.     NOBTLessEqualStrategyNumber,
  65.     CommuteArguments
  66. };
  67.  
  68. static uint16    BTGreaterEqualTermData[] = {    /* XXX type clash */
  69.     2,
  70.     NOBTGreaterEqualStrategyNumber,
  71.     0x0,
  72.     NOBTGreaterEqualStrategyNumber,
  73.     CommuteArguments
  74. };
  75.  
  76. static uint16    BTGreaterTermData[] = {        /* XXX type clash */
  77.     2,
  78.     NOBTGreaterStrategyNumber,
  79.     NegateResult,
  80.     NOBTGreaterStrategyNumber,
  81.     NegateResult | CommuteArguments
  82. };
  83.  
  84. static StrategyTerm    BTEqualExpressionData[] = {
  85.     (StrategyTerm)BTLessTermData,        /* XXX */
  86.     (StrategyTerm)BTLessEqualTermData,        /* XXX */
  87.     (StrategyTerm)BTGreaterEqualTermData,    /* XXX */
  88.     (StrategyTerm)BTGreaterTermData,        /* XXX */
  89.     NULL
  90. };
  91.  
  92. static StrategyEvaluationData    BTEvaluationData = {
  93.     /* XXX static for simplicity */
  94.  
  95.     NOBTMaxStrategyNumber,
  96.     (StrategyTransformMap)BTNegate,    /* XXX */
  97.     (StrategyTransformMap)BTCommute,    /* XXX */
  98.     (StrategyTransformMap)BTNegateCommute,    /* XXX */
  99.  
  100.     NULL, NULL, (StrategyExpression)BTEqualExpressionData, NULL, NULL
  101.         /* XXX */
  102. };
  103.  
  104. /* ----------------------------------------------------------------
  105.  *    RelationGetBTStrategy
  106.  * ----------------------------------------------------------------
  107.  */
  108.  
  109. StrategyNumber
  110. _nobt_getstrat(rel, attno, proc)
  111.     Relation    rel;
  112.     AttributeNumber    attno;
  113.     RegProcedure    proc;
  114. {
  115.     StrategyNumber    strat;
  116.  
  117.     strat = RelationGetStrategy(rel, attno, &BTEvaluationData, proc);
  118.  
  119.     Assert(StrategyNumberIsValid(strat));
  120.  
  121.     return (strat);
  122. }
  123.  
  124. bool
  125. _nobt_invokestrat(rel, attno, strat, left, right)
  126.     Relation rel;
  127.     AttributeNumber attno;
  128.     StrategyNumber strat;
  129.     Datum left;
  130.     Datum right;
  131. {
  132.     return (RelationInvokeStrategy(rel, &BTEvaluationData, attno, strat, 
  133.                    left, right));
  134. }
  135.  
  136. #endif /* NOBTREE */
  137.